-----------------定时任务获取网络以及硬盘情况-----------------
------
--
--       请求参数
--       host  type card
--
--       执行业务：
--       定时任务设置每1秒执行一次
--       按照每小时00分钟时获取硬盘信息，调用  /usr/local/gcstorage/bin/gcs_manage 下面 diskmonitor.sh
--       按照每1秒获取网卡信息，调用  /usr/local/gcstorage/bin/gcs_manage 下面 netmonitor.sh
--
--       开发步骤：
--       获取当前服务器IP，从sharedict中获取当前服务器类型，前置：qz；后置：hz 以及需要监控的网卡名称 eth
--       每秒钟调用 netmonitor.sh eth
--           数据格式：
--           qnet {"name":"eth0","input":100,"output":200}
--           hnet {"name":"eth1","input":100,"output":200}
--
--       如果当前时间如果时间为每小时00分钟调用 diskmonitor.sh
--       如果当前时间不为每小时00不调用 diskmonitor.sh 只是获取上次数据进行插入
--           数据格式：
--           qdisk [{"path":"/dev/sda2","size":"125818MB","use":"22930MB","free":"96497MB","precent":"20%"},{"path":"/dev/sda2","size":"125818MB","use":"22930MB","free":"96497MB","precent":"20%"}]
--           hdisk [{"path":"/dev/sda2","size":"125818MB","use":"22930MB","free":"96497MB","precent":"20%"},{"path":"/dev/sda2","size":"125818MB","use":"22930MB","free":"96497MB","precent":"20%"}]
--
--           qcpu {"precent":1.5}
--           hcpu {"precent":2.0}
--  
-----        qmem {"precent":1.5}
--           hmem {"precent":2.0}

----全局函数定义
--local list_method  = require("gcs.ssdb.method")
local config_table = ngx.shared.gcs_config   --声明ngx.shared.gcs_config
local cjson        = require "cjson"
local tb_insert    = table.insert


----获取服务器信息

----获取服务器当前时间
local nowtime   = ngx.time()
local str_nowtime = tostring(nowtime)
local now_time = string.sub(str_nowtime,-2)
local h_hour = string.sub(str_nowtime,-4)


string.split = function(s, p)

  local rt= {}
  string.gsub(s, '[^'..p..']+', function(w) table.insert(rt,w) end )
  return rt
end

----获取2组服务器信息
local disk_command = config_table:get("p_disk_command")

----获取数据库KEY

----硬盘总信息table
local main_disk_tables = {}
----3600/60/60 1小时    h_hour == 3600
----硬盘内容数据信息
local disk_tables = {}

local disk_popen =io.popen(disk_command)
for diskdatas in disk_popen:lines() do
  local disk_data = {}
  if diskdatas then
    ----单块硬盘内容数据信息
    local datas = string.split(diskdatas,",")
    if datas then
      disk_data.path = datas[1]
      disk_data.size = datas[2]
      disk_data.use = datas[3]
      disk_data.free = datas[4]
      disk_data.precent = datas[5]
    end
  end
  tb_insert(disk_tables,disk_data)
end
ngx.say(cjson.encode(disk_tables))


